/* 
 * Gneat (http://gneat.org)
 *
 * (C) Copyright 2011 and beyond - Claudio Stella, all rights reserved.
 *
 * This file is part of Gneat.
 *
 * Gneat is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License (LGPL)
 * as published by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Gneat is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * and the GNU General Public License, for completeness, along with Gneat.  
 * If not, see <http://www.gnu.org/licenses/>.
 */
package org.neatshell.gneat.client.presenter.core.misc;

import org.neatshell.gneat.client.presenter.core.IPresenter;
import org.neatshell.gneat.client.presenter.core.IPresenterList;

public interface AddingList {			
	/**
	 * Adds to this list, the passed items.<br>
	 * @param items one or more instance of {@link IPresenter} to add to this list
	 * @return the current instance of {@link IPresenterList} with the passed items at the end
	 */
	IPresenterList add(IPresenter... items);

	/**
	 * Adds to this list, the items contained into the passed list.<br>
	 * @param list an instance of {@link IPresenterList} containing the items to add
	 * @return the current instance of {@link IPresenterList} with the items contained by the passed list at the end
	 */
	IPresenterList add(IPresenterList list);

	
	IPresenterList add(Integer index, IPresenter... items);
	IPresenterList add(Integer index, IPresenterList list);


//	/**
//	 * Excludes from this list, the passed items.<br>
//	 * <b>WARNING : this operation cannot be undone with {@link FilteringList#end()} or {@link FilteringList#andSelf()}</b>
//	 * @param items one or more instance of {@link IPresenter} to exclude from this list
//	 * @return the current instance of {@link IPresenterList} without the passed items
//	 */
//	IPresenterList exclude(IPresenter... items);
//	
//	/**
//	 * Excludes from this list, the items contained into the passed list.<br>
//	 * <b>WARNING : this operation cannot be undone with {@link FilteringList#end()} or {@link FilteringList#andSelf()}</b>
//	 * @param list an instance of {@link IPresenterList} containing the items to exclude
//	 * @return the current instance of {@link IPresenterList} without the items contained by the passed list
//	 */
//	IPresenterList exclude(IPresenterList list);
//
//	/**
//	 * Excludes from this list, items at the passed indexes.<br>
//	 * <b>WARNING : this operation cannot be undone with {@link FilteringList#end()} or {@link FilteringList#andSelf()}</b>
//	 * @param indexes one or more {@link Integer} indicating which items to exclude
//	 * @return the current instance of {@link IPresenterList} without the items at the specified indexes
//	 */
//	IPresenterList exclude(Integer... indexes);
//	
//	/**
//	 * Excludes all the items contained by this list.<br>
//	 * <b>WARNING : this operation cannot be undone with {@link FilteringList#end()} or {@link FilteringList#andSelf()}</b>
//	 * @return the current instance of {@link IPresenterList} with no items
//	 */
//	IPresenterList excludeAll();
}